www.gusucode.com > Student Competition - Code Generation Training工具箱matlab源码 > Student Competition - Code Generation Training/CodeGenFX/Exercises/Exercise2/spectralSubtraction.m
function XHat = spectralSubtraction(Y, Sw, NFFT) %#codegen XHat = coder.nullcopy(complex(zeros(NFFT,1))); % speech spectral properties - using only half spectrum SyHalf = abs(Y(1:NFFT/2 + 1)); SwHalf = Sw(1:NFFT/2 + 1); % Save phase yPhase = angle(Y(1:NFFT/2 + 1)); % Subtraction SxHat = SyHalf - SwHalf; %Subtraction SxHat = max(SxHat,0); %Set negative values to zero % Restore full spectrum XHat(1:NFFT/2 + 1) = SxHat.*exp(1j*yPhase); XHat(NFFT/2 + 2:NFFT) = conj(XHat(NFFT/2:-1:2)); end